package com.jintian.smart.base.api.security.provider;

import com.jintian.smart.base.api.security.constant.DataTracerTypeEnum;
import com.jintian.smart.base.api.security.form.DataTracerForm;

import java.util.List;

public interface IDataTracerProvider {
    /**
     * 保存【删除】数据变动记录
     */
    void delete(Long dataId, DataTracerTypeEnum type);


    /**
     * 保存【新增】数据变动记录
     */
    void insert(Long dataId, DataTracerTypeEnum type);

    /**
     * 保存【修改】数据变动记录
     */
    void update(Long dataId, DataTracerTypeEnum type, Object oldObject, Object newObject);

    /**
     * 保存数据变动记录
     */
    void addTrace(DataTracerForm tracerForm);

    /**
     * 保存数据变动记录
     */
    void addTrace(Long dataId, DataTracerTypeEnum type, String content);

    /**
     * 获取变更内容
     */
    String getChangeContent(Object object);

    /**
     * 获取变更内容
     */
    String getChangeContent(Object oldObject, Object newObject);

    /**
     * 保存【批量删除】数据变动记录
     */
    public void batchDelete(List<Long> dataIdList, DataTracerTypeEnum type);
}
